﻿/*************************************************************************************

- CLR版本：        4.0.30319.42000
- 类 名 称：       Shape
- 机器名称：       YTE
- 命名空间：       LD.Vision
- 文 件 名：       Shape
- 创建时间：       2022/8/25 16:30:16
- 作    者：       YTE
- 说   明：
- 修改时间：
- 修 改 人：
  *************************************************************************************/

using HalconDotNet;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace LD.Vision
{
    public class Shape
    {
        public static bool FindShapeModel(HShapeModel hShapeModel, HImage image, out HTuple row1, out HTuple column1, out HTuple angle1, out HTuple score1)
        {
            bool result = false;
            image.FindShapeModel(hShapeModel,
                                 -180d,
                                 180d,
                                 0.5,
                                 0,
                                 0.5,
                                 "least_squares",
                                 0,
                                 0.9,
                                 out HTuple row,
                                 out HTuple column,
                                 out HTuple angle,
                                 out HTuple score);
            row1 = row;
            column1 = column;
            angle1 = angle;
            score1 = score;
            if (row > 0)
            {
                HHomMat2D mat2D = new HHomMat2D();
                mat2D.HomMat2dIdentity();
                var tran = mat2D.HomMat2dTranslate(row, column);
                var rotate = tran.HomMat2dRotate(angle, row, column);

                var xld = hShapeModel.GetShapeModelContours(1);
                var xldCont = rotate.AffineTransContourXld(xld);

                xldCont.Dispose();
                xld.Dispose();
                rotate = null;
                tran = null;
                mat2D = null;
                result = true;
            }
            return result;
        }
    }
}
